package com.jiali.backend.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 预约订单
 *
 * @TableName appointment_order
 */
@TableName(value = "appointment_order")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AppointmentOrder {
    /**
     * 订单id
     */
    @TableId(type = IdType.AUTO)
    private Integer id;

    /**
     * 订单表关联用户id
     */
    private Integer userId;

    /**
     * 预约表关联车辆id
     */
    private Integer vehicleId;

    /**
     * 预约表关联服务id
     */
    private Integer serviceId;
    /**
     * 预约表关联技师id
     */
    private Integer staffId;
    /**
     * 用户预约时间
     */
    private Date appointmentTime;

    /**
     * 订单状态（0-待确认 1-进行中 2-已完成 3-已取消）
     */
    private Integer status;

    /**
     * 预计完成时间
     */
    private Date estimatedCompletion;

    /**
     * 时间完成时间
     */
    private Date actualCompletion;

    /**
     * 问题描述
     */
    private String problemDescription;
    /**
     * 技师水平
     */
    private Integer serviceTechnician;
    /**
     * 订单创建时间
     */
    private Date createdAt;
    //订单评论状态 0-未评价 1-已评价
    private Integer commentStatus;
    /**
     * 订单最后更新时间
     */
    private Date updatedAt;
    @TableField(exist = false)
    private String model;  // 车辆型号

    @TableField(exist = false)
    private String serviceName;  // 服务项名称
    @TableField(exist = false)
    private String formattedAppointmentTime;  // 格式化后的预约时间
    @TableField("order_number")
    private Integer orderNumber; // 新增订单号字段
    @TableField(exist = false)
    private String licensePlate;//车牌号
    @TableField(exist = false)
    private String username; // 新增用户名字段
    public String getFormattedAppointmentTime() {
        if (this.appointmentTime == null) {
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年M月d日 HH:mm");
        return sdf.format(this.appointmentTime);
    }
}